//
//  OAuthViewController.swift
//  WeiBo_One
//
//  Created by 李炎 on 15/10/21.
//  Copyright © 2015年 蜡笔小炎. All rights reserved.
//

import UIKit

class OAuthViewController: UIViewController {
    
    //懒加载 webView 根视图
    private lazy var webView = UIWebView()

    override func viewDidLoad() {
        super.viewDidLoad()
        // 设置标题
        title = "登陆新浪微博"
        // 设置左侧‘返回’按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "返回", style: UIBarButtonItemStyle.Plain, target: self, action: "clickBackItem")
        //设置右侧‘自动填充’按钮
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target: self, action: "clickAutoFill")
//         替换根视图为 UIWebView
        view = webView
        //设置代理
        webView.delegate = self
        
        // 开始加载OAuth授权页面
        webView.loadRequest(NSURLRequest(URL: NetWorkTools.sharedTools.oauthUrl))
    }

    // 点击了返回按钮，控制器dismiss
    func clickBackItem() {
        dismissViewControllerAnimated(true, completion: nil)
    }
    // 点击了自动填充按钮
    // web注入 -- 以JS代码的方式向web添加内容
    // 通过safari开发工具中的元素检查器找到元素
    func clickAutoFill() {
        let js = "document.getElementById('userId').value = '13718491916';"
            + "document.getElementById('passwd').value = 'jie963';"
        webView.stringByEvaluatingJavaScriptFromString(js)
    }
}

//MARK: - webView 的代理方法
extension OAuthViewController: UIWebViewDelegate {
    //将要加载网络请求时调用
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
        guard let url = request.URL where url.host == "www.itheima.com" else {
            //host不为www.baidu.com，继续加载
            return true
        }//经过守护，下面 host 为 www.baidu.com
        
        guard let query = url.query where query.hasPrefix("code=") else{
            //host为www.baidu.com，query不为code=（用户取消授权）
            return false
        }//经过守护，下面 [host 为 www.baidu.com]  [query 为 code=]
        
        // 得到授权码
        let code = query.substringFromIndex("code=".endIndex)

        // 加载Token值
        UserAccountViewModel.sharedAccoutViewModel.loadAccoutToken(code) { (isSuccess) -> () in
            if isSuccess == false {
                print("加载Token失败")
            }else{
                print("加载Token成功")
            }
        }
        
        NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchRootControllerNotification, object: "welcome")
        
        // 不加载回调网页
        return false
    }
}



